- Sorting

1. Selection sort
Applicatin#1: SortingApp.java

arr:
2	5	10	1

1	2	5	10

Simpler version's aim: let the smallest value occupy the first position of the array

for(int idx = 0; idx < arr.length - 1; idx++) {
int idxMin = idx;

for(int scan = idx + 1; scan < arr.length; scan++) {
	if(arr[scan] < arr[idxMin]) {
		idxMin = scan;
	}
}

swap(arr, idxMin, idx);
}


2. Insertion sort

10	5	1	2

5	10	1	2

1	5	10	2

1	2	5	10

Simpler version of the problem: Insert into the sorted subset the first insert value (i.e., the 
value whose idx = 1)

for(int idx = 1; idx < arr.length; idx++) {
int insert = idx;
while(insert > 0 && arr[insert] < arr[insert - 1]) {
	swap(arr, insert, insert - 1);
	insert--;
} 
}

Time complexity: O(n^2)

3. Bubble Sort: BubbleSort.java

4. Anagram (LeetCode): Anagram.java

ih and hi ---> hi and hi (sort the letters)
abc and cba ---> abc and abc

5. Two Number Sum

1	3	4	10		target: 7
	left	right

